{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Illustrates linear complementarity problem\n", "\n", "**Randall Romero Aguilar, PhD**\n", "\n", "This demo is based on the original Matlab demo accompanying the Computational Economics and Finance 2001 textbook by Mario Miranda and Paul Fackler.\n", "\n", "Original (Matlab) CompEcon file: **demslv10.m**\n", "\n", "Running this file requires the Python version of CompEcon. This can be installed with pip by running\n", "\n", " !pip install compecon --upgrade\n", "\n", "Last updated: 2021-Oct-01\n", "
\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "plt.style.use('seaborn')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def basicsubplot(ax, title, yvals,solution):\n", " ax.set(title=title,\n", " xlabel='',\n", " ylabel='',\n", " xlim=[-0.05,1.05],\n", " ylim=[-2,2],\n", " xticks=[0,1],\n", " xticklabels=['a','b'],\n", " yticks=[-2,0,2],\n", " yticklabels=['','0',''])\n", "\n", " ax.plot([0,1],[0,0],'k-',linewidth=1.5)\n", " ax.plot([0,0],[-2,2],'k:',linewidth=2.5)\n", " ax.plot([1,1],[-2,2],'k:',linewidth=2.5)\n", " ax.plot([0, 1],yvals)\n", " ax.plot(solution[0], solution[1],'r.', ms=18)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Possible Solutions to Complementarity Problem, $f$ Strictly Decreasing" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhEAAAEFCAYAAABdMbUCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAA2o0lEQVR4nO3deVxU990v8M8MDPs+yDIjAiLgBs64xA1lRI1bmqDRhkbN9kq1rTe5ve3Nk7RJb9I2N03SNM+TtGmqT5onpk2qrabebGahMAhiXGdYlCAugM7AsIjKvs25f5jwxACizHBmfvB5v179A+fM+X2xn4zf+Z3zOz+FJEkSiIiIiG6R0tUFEBERkZjYRBAREdGwsIkgIiKiYWETQURERMPCJoKIiIiGhU0EERERDcuYayKefvppZGRk4N///d8BAGVlZfjZz352w/e0tLTg4YcfRkdHh0Njt7S0ICsrC2vWrMFnn30GAHj33Xexe/duXLx4EXq9fsD3lZaW4he/+IVDYwNAe3s7fvrTn2LVqlVYsWIFsrOzHT4nyc+VGQaA7du3Y+XKlVi+fDl+//vfw9FV4q+//joMBkPf72Cz2fCDH/wAkiRh8+bN+OSTT/q9p7e3F1u3bkVjY6NDY5NrGI1GfOc738GKFSvw6KOPoqWlxaHzFRQUYMmSJVi/fj06Ojr68tHQ0HDD9z3//PM4fPiwQ2MDYzzD0hiTnJws1dTUSJIkSb29vdLatWul2traId/3z3/+U3r++ecHfO3FF1+UKisrhzzHkSNHpGXLlvX9fPHiRWn9+vWS3W6XLly4IOl0ukHf+8QTT0g5OTn9/vz06dPSW2+9JV2+fHnI8V944QXpqaeekiRJkiwWi5SWltb3d0HicGWGjUajdNddd0mtra1SR0eHtHHjRumjjz7qd9yePXsko9Eo9fb2DnnOjIwM6ejRo30/P/zww1JRUZEkSZK0adMmaf/+/QO+78iRI9Ijjzwy5PnJvTQ2Nkrz5s2Tzp8/L0nStew9/fTT/Y47fPiw9I9//ENqa2sb8pxPPPGE9Nprr/X9vGPHDumNN94Y8n1Xr16V7rjjDqm9vb3fa8zwzRlTMxH33nsvJEnC97//fRw7dgz79+/H+PHjERkZCQDIzc1FVlYW1q1bB4PBgP/4j//oe++qVavwwQcfDNjZhoeHY9u2bbj//vvx8ccfo6urq98x586dw89//nPYbDbcdddd6OjowPbt23HXXXdBoVAAAOx2O5588klkZmZi/fr1MJvNfe+/55578Morrww4dm1tLdauXYvHHnsMx44dG/T3z87OxoYNGwAAGo0GCxcuxP79+2/q747cgyszDACff/457rjjDvj5+cHb2xvr1q3D+++/3++4uLg47N69GytWrMBrr70Gm8024Pl+/OMfw2az4cknn8THH3+MoqIiNDY2IjU19box161bh9WrV+P111/v+/M5c+bgzJkzKCsru6m/O3IPBQUFSElJQVxcHADge9/7Hj744IN+M1parRYlJSVYtWoVnnnmmUH/f37jjTfwr3/9C3/729/wwgsvoL29HTt37sS6desAAA0NDfjRj36Ee+65BxkZGdi8eXPft//AwEDo9Xrs3r2733mZ4Zvk4iZGdklJSVJjY6MkSZL0yCOPSHv37pUkSZLsdru0adOmvu64trZWmjJlSt+xkiRJW7dulfbs2TPouU+cOCH97Gc/kzIyMqS//vWv/V7/4osvpDVr1vSNN3fuXOnChQuSJEnShQsXpKSkpL5vdfn5+dLixYulzs7Ovvfr9Xqpurp6wLG7urqkTz/9VHr44YelO+64Qzpy5Ei/Y6ZPny7V1dX1/fzyyy9Lzz333KC/D7knV2b4oYcekj788MO+nw8ePChlZmYOer66ujpp+/bt0qpVq6Qf/OAH1+X5a0uWLJGKi4slSZKk559/Xnr11Vf7Xtu0aZO0detWqbu7W2pubpZWrlwpGY3Gvtd//etfS6+88sqg45P72b59u/SLX/yi7+fu7m4pKSlJam5uHvD4trY26b333pPuvfdeaf369VJFRUW/Yx5//PG+mYecnBxp06ZNfa+99dZb0vbt2yVJuvbfyMMPPyz9+c9/7nv9008/lTZu3DhovczwjY2pmYhvO3fuHCZMmAAAUCgU+NOf/oSTJ0/iD3/4A55//nlIkoT29va+48ePH4/z588Pej4PDw8olcq+/91IU1MTmpubMX78+L4/CwoKwurVqwEAaWlpfTXezPgKhaJvXIVC0Te78U2SJPX786HqJPcmd4a/nSFJkm6YoW9m0sPD45Z+n6+tX78enp6eCAgIwIoVK1BYWHjTvw+5H7vdPuDn02A5+mYev87SjXw7Q/fffz9mzpyJ//qv/8IzzzyDiooKtLW1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig1, axs = plt.subplots(1,3,figsize=[9,4])\n", "basicsubplot(axs[0],'f(a) > f(b) > 0', [1.5, 0.5], [1.0,0.5])\n", "basicsubplot(axs[1],'f(a) > 0 > f(b)', [0.5, -0.5], [0.5,0.0])\n", "basicsubplot(axs[2],'0 > f(a) > f(b)', [-0.5, -1.5],[0.0,-0.5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Possible Solutions to Complementarity Problem, $f$ Strictly Increasing" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig2, axs = plt.subplots(1,3,figsize=[9,4])\n", "basicsubplot(axs[0],'f(a) < f(b) < 0', [-1.5, -0.5], [0.0,-1.5])\n", "basicsubplot(axs[1],'f(a) < 0 < f(b)', [-0.5, 0.5], [0.5,0.0])\n", "basicsubplot(axs[2],'0 < f(a) < f(b)', [0.5, 1.5],[1.0,1.5])\n", "axs[1].plot(0.0,-0.5,'r.',ms=18)\n", "axs[1].plot(1.0,0.5,'r.',ms=18)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.7 ('base')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" }, "vscode": { "interpreter": { "hash": "ad2bdc8ecc057115af97d19610ffacc2b4e99fae6737bb82f5d7fb13d2f2c186" } } }, "nbformat": 4, "nbformat_minor": 2 }